/*
 * funcionesUtiles.c
 *
 *  Created on: 13/10/2011
 *      Author: JM
 */


#include "../../Commons/src/includes/BibliotecasGenerales.h"
#include "./includes/funcionesUtiles.h"
#include <ctype.h>
#include <string.h>
#include <sys/time.h>
#include <time.h>


uint8_t *sacaUltimoParametroDePath(char parametro[100]){
	char delim1[1]="(";
	char delim2[2]="/";
	darVueltaString(parametro);
//	printf("parametro:%s\n",parametro);
//	strtok(parametro,delim1);
	strtok(parametro,delim2);
	darVueltaString(parametro);
	char *nombre=calloc(1,strlen(parametro));
	memcpy(nombre,parametro,strlen(parametro));
//	printf("nombre:%s\n",nombre);
	return nombre;
}




void darVueltaString(char stringADarVuelta[1000]){
	int i;
	char stringAuxiliar[1100];
	for(i=0;i<(int)strlen(stringADarVuelta);i++){
		stringAuxiliar[i]= stringADarVuelta[(int)strlen(stringADarVuelta)-i-1];
	}
	stringAuxiliar[i]='\0';
	strcpy(stringADarVuelta,stringAuxiliar);

}

//pasa a little endian para interpretar los valores...
uint16_t pasarLitlleEnd_uint16(uint16_t val) {
        return (val << 8) | (val >> 8);}


uint32_t parseaPath(char * path){
	char delim[1]="/";
	char * ptr;
	ptr=strtok(path,delim); // Primera llamada

	   printf( "%s\n", ptr );
	   while( (ptr = strtok( NULL,delim)) != NULL ) {   // Posteriores llamadas
	     printf( "%s\n", ptr );}

return 0;}


uint8_t *pasarAMayuscula(uint8_t *cadena){   //SEG FAULT

	  uint32_t i;

	   for(i = 0; cadena[i]; i++) {
	      cadena[i] = toupper(cadena[i]);
	   }

return cadena;}


//uint8_t *pasarAMayuscula(uint8_t *cadena){
//
//
//	while (*cadena){
//	   *cadena = toupper(*cadena);
//	   cadena++;
//	}
//	return cadena;
//	}


//uint8_t *pasarAMayuscula(uint8_t *cadena){
////	strupr(cadena);
//	return cadena;
//}



uint32_t tamCadena(char cadena[]){
	uint32_t i,tam=0;
	for(i=0;(cadena[i]!='\0') && (cadena[i]!=' ');++i){
		tam++;
	}
	return tam;
}


int agregarEntradaLog(char *TipoLog, char *Data)
{
	struct timeval valorTiempo;
	struct timezone zonaTiempo;
	struct tm *tiempoMaquina=NULL;
	time_t rawtime;
	struct tm *horaDelSistema=NULL;
	char BufferLog[500];

	memset(BufferLog,'\0',sizeof(BufferLog));
	time(&rawtime);
	horaDelSistema=localtime(&rawtime);
	gettimeofday(&valorTiempo, &zonaTiempo);
	tiempoMaquina=localtime(&valorTiempo.tv_sec);

	sprintf(BufferLog,"%02d:%02d:%02d.%03d %d %d:%s: %s \r\n\r\n",horaDelSistema->tm_hour,horaDelSistema->tm_min,horaDelSistema->tm_sec,((valorTiempo.tv_usec)/1000),getppid(),getpid(),TipoLog,Data);
	escribirArchivoLog(BufferLog, "log.txt");

return 0;
}

int escribirArchivoLog(char *BufferLog, char *nombreArchivo)
{
		FILE *manejadorArchivo;
		manejadorArchivo = fopen (nombreArchivo, "a+" );

		fputs(BufferLog,manejadorArchivo);

		fclose (manejadorArchivo );

return 0;
}
